//
//  Ext+RandomAccessCollection.swift
//  Crazy
//
//  Created by ming on 2024/10/27.
//

import Foundation

extension RandomAccessCollection where Self.Element: Identifiable {
    // 来源：https://juejin.cn/post/6844904053114142728
    func isLastItem<Item: Identifiable>(_ item: Item) -> Bool {
        guard !isEmpty else {
            return false
        }
        
        // 查找当前item索引
        // RandomAccessCollection能够以O(1)复杂度查找元素非常快
        guard let itemIndex = firstIndex(where: { $0.id.hashValue == item.id.hashValue }) else {
            return false
        }
        
        // 比较当前item索引和结束索引endIndex(结束索引等于当前数组item的数量)，如果距离是1。代表当前item就是最后一个
        let distance = self.distance(from: itemIndex, to: endIndex)
        return distance == 1
    }
}

